"""
闭包：
1. 内部函数与外部函数的变量组成的特殊对象
2. 能够实现一个函数中使用另外一个函数中变量的方式
"""


# xx = 300
#
#
# def a():
#     aa = 100
#
#
# def b():
#     bb = 200
#
#
# def c():
#     pass


# demo
def outer():
    name = "王老师"

    def inner(foods="鱼"):
        print("%s喜欢吃%s" % (name, foods))

    inner()
    inner("螃蟹")
    inner("青岛大虾")


outer()
# print(name)  # 这里不能使用name

"""
闭包的理解
1. 通过class定义类，然后 类名()创建实例对象，对象中有属性、方法，对象就是一种封装的特殊空间
2. 闭包实现的过程时函数嵌套定义，内部函数编写功能，外部函数定义变量，这样有功能+变量组成的特殊空间叫做闭包
3. 实例对象除了编写的属性+方法，还有系统默认继承的很多object的属性和方法，而闭包中只有自己定义变量+功能
"""
